//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

// Με την ονομασία "pss" αναφερόμαστε στην τελευταία στήλη του καφενείου. Αυτή η στήλη
// αφορά σε προσκλήσεις, σε αναζητήσεις και στη συζήτηση του καφενείου. Η ονομασία "pss"
// έχει τις ρίζες της σε παλαιότερες versions όπου είχαμε προσκλήσεις ("p"), συσχετίσεις
// ("s") και συζητήσεις ("s").
//
// Στη στήλη "pss" εμπεριέχονται τρεις οριζόντιες περιοχές χωρισμένες μεταξύ τους με
// οριζόντια panels τα οποία περιέχουν input fields και εικονίδια/εργαλεία. Αυτά τα
// panels είναι εξοπλισμένα και με μεθόδους μετακίνησης καθ' ύψος, με τις οποίες ο χρήστης
// μπορεί να αλλάζει τις καθ' ύψος αναλογίες των τριών περιοχών.

Tsoxa.pss = {};

Tsoxa.pss.setup = function() {
	Tsoxa.pssDOM.

	append(Tsoxa.stitlosDOM = $('<div>').addClass('panel Hpanel')).
	append(Tsoxa.sizitisiDOM = $('<div>').addClass('pssEnotita'));

	Tsoxa.stitlosSetup();

	Tsoxa.pss.inputSetup();
	Tsoxa.pss.oplismos();
}

// Η μέθοδος "stitlosSetup" διαμορφώνει το οριζόντιο panel της συζήτησης του καφενείου.
// Εδώ παρέχεται input πεδίο στο οποίο ο χρήστης γράφει τα σχόλιά του, και εικονίδια/εργαλεία
// που αφορούν σε ενέργειες που αφορούν στη συζήτηση του καφενείου, π.χ. αποστολή σχολίου,
// διαγραφή σχολίου, πάγωμα κειμένου κλπ.
//
// Όλα τα στοιχεία του panel εγκυβωτίζονται σε div elements κλάσης "pssPanelBox".

Tsoxa.stitlosSetup = function() {
	Tsoxa.stitlosDOM.

	// Ακολουθεί το input field της συζήτησης καφενείου.

	append($('<div>').addClass('pssPanelBox').
	append(Tsoxa.sizitisiInputDOM = $('<input>').addClass('pssInput').attr({
		name: 'sizitisi',
		type: 'text',
	})).

	// Σε κάθε πληκτρισμό ελέγχουμε το πλήκτρο που έχει πατηθεί και κάνουμε τις
	// προσήκουσες ενέργειες.

	on('keyup', function(e) {
		Kafenio.sizitisiKeyup(e, Tsoxa);
	})).

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////

	append($('<div>').addClass('pssPanelBox').
	append($('<img>').addClass('HpanelIcon').attr({
		src: Client.server + 'ikona/pss/apostoli.png',
	})).
	on('click', function(e) {
		Tsoxa.inputRefocus(e);
		Tsoxa.sizitisi.apostoli();
	})).

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////

	append($('<div>').addClass('pssPanelBox').
	append($('<img>').addClass('HpanelIcon').attr({
		src: Client.server + 'ikona/pss/clear.png',
	})).
	on('click', function(e) {
		Tsoxa.sizitisiInputDOM.val('');
		Tsoxa.sizitisiProepiskopisiDOM.empty().removeClass('sizitisi');
	})).

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////

	append($('<div>').addClass('pssPanelBox').
	append($('<img>').addClass('HpanelIcon').attr({
		src: Client.server + 'ikona/pss/sigasi.png',
	}))).

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////

	append($('<div>').addClass('pssPanelBox').
	append($('<img>').addClass('HpanelIcon').attr({
		src: Client.server + 'ikona/pss/pagoma.png',
		title: 'Πάγωμα κειμένου',
	}).on('click', function(e) {
		var img = $(this);
		Tsoxa.inputRefocus(e);

		if (Tsoxa.sizitisiDOM.data('pagomeno')) {
			Tsoxa.sizitisiDOM.removeData('pagomeno').removeClass('pssPagomeno').scrollKato();
			img.attr({
				src: Client.server + 'ikona/pss/pagoma.png',
				title: 'Πάγωμα κειμένου',
			});
		}
		else {
			Tsoxa.sizitisiDOM.data('pagomeno', 1).addClass('pssPagomeno');
			img.attr({
				src: Client.server + 'ikona/pss/xepagoma.png',
				title: 'Ρολάρισμα κειμένου',
			});
		}
	})));
}

// Η function "oplismos" αρματώνει τα εικονίδια/εργαλεία των οριζόντιων panels με
// ενέργειες που αφορούν κυρίως στη στιλιστική διαφοροποίηση των εικονιδίων σε σχέση
// με τον δείκτη του mouse.

Tsoxa.pss.oplismos = function() {
	$('.HpanelIcon').parents('.pssPanelBox').
	on('mousedown', function(e) {
		if ($(this).hasClass('pssMetakinisi')) return;
		e.stopPropagation();
	}).
	on('mouseenter', function(e) {
		e.stopPropagation();
		if (Tsoxa.sekinisi) return;
		$(this).addClass('iconCandi');
	}).
	on('mouseleave', function(e) {
		e.stopPropagation();
		if (Tsoxa.sekinisi) return;
		$(this).removeClass('iconCandi');
	});
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Tsoxa.pss.inputWidthFix = function() {
	var w;

	w = parseFloat($('#pss').outerWidth() * 0.5);
	Tsoxa.sizitisiInputDOM.css('width', w + 'px');
	if (w > 300) w = 300;
}

Tsoxa.pss.inputSetup = function() {
	// Η ιδιότητα "trexonInput" δείχνει ποιο είναι το τρέχον input field στην
	// περιοχή pss.

	if (!Tsoxa.trexonInput) Tsoxa.trexonInput = Tsoxa.sizitisiInputDOM;
	if (!Tsoxa.opener.Client.session.kinito) Tsoxa.trexonInput.focus();

	$(document.body).
	on('click', function(e) {
		Tsoxa.inputRefocus(e);
	});

	$('.pssEnotita').
	on('click', function(e) {
		e.stopPropagation();
	});

	$('.pssInput').
	on('mousedown', function(e) {
		var fld = $(this);
		e.stopPropagation();
		if (Tsoxa.trexonInput === fld) return;
		Tsoxa.trexonInput = fld.focus();
	});
}

Tsoxa.inputRefocus = function(e) {
	if (e) {
		e.stopPropagation();
		e.preventDefault();
	}

	if (Tsoxa.opener.Client.session.kinito) return;
	Tsoxa.trexonInput.focus();
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Tsoxa.sizitisi = {};

Tsoxa.sizitisi.apostoli = function() {
	var sxolio;

	sxolio = Tsoxa.sizitisiInputDOM.val().trim();
	if (sxolio === '') return;

	Client.skiserService('sizitisiTrapezi', 'sxolio=' + sxolio.uri()).
	done(function(rsp) {
		Tsoxa.sizitisiInputDOM.val('');
	}).
	fail(function(err) {
		Client.skiserFail(err);
	});
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

// Η μέθοδος "enotitaStretch" διαμορφώνει τις αρχικές καθ' ύψος αναλογίες των περιοχών
// του "pss". Πρόκειται για καταμερισμό των περιοχών ανάλογα με το συνολικό ύψος της
// περιοχής "pss".

Tsoxa.pss.enotitaStretch = function(oh) {
	var h;

	h = Tsoxa.pssDOM.innerHeight();
	h -= Tsoxa.stitlosDOM.outerHeight();
	h -= Tsoxa.sizitisiDOM.outerHeight() - Tsoxa.sizitisiDOM.innerHeight();

	if (h < 0) h = 0;
	Tsoxa.sizitisiDOM.css('height', h + 'px');
}
